﻿#define _CRT_SECURE_NO_WARNINGS
//#include <stdio.h>
//int main()
//{
//	int a = 9, b = 3, c = 0;
//	c = a ^ b;
//	printf("%d", c);
//	return 0;
//}


//在一个整型数组中，只有一个数字出现一次，其他数组都是成对出现的，请找出那个只出现一次的数字。
//
//例如：

//数组中有：1 2 3 4 5 1 2 3 4，只有5出现一次，其他数字都出现2次，找出5

//#include <stdio.h>
//int main()
//{
//	int arr[] = {1,2,3,4,5,1,2,3,4};
//	int r = sizeof(arr) / sizeof(arr[0]);
//	int i = 0;
//	int flag = 0;
//	for (i = 0; i < r; i++)
//	{
//		int j = i + 1;
//		for (j = i + 1; j < r; j++)
//		{
//			if (arr[i] == arr[j])
//			{
//				flag = 1;
//				
//				break;
//			}
//			else
//				flag = 0;
//		}
//		if (flag == 0)
//			printf("%d ", arr[i]);
//	}
//	return 0;
//}

//#include <stdio.h>
//
//int fun(int arr[], int size) 
//{
//    int result = 0;
//    for (int i = 0; i < size; i++) 
//    {
//        result ^= arr[i];
//    }
//    return result;
//}
//
//int main() 
//{
//    int arr[] = { 1, 2, 3, 4, 5, 1, 2, 3, 4 };
//    int r = fun(arr, sizeof(arr) / sizeof(arr[0]));
//    printf("只出现一次的数字是: %d\n", r);
//    return 0;
//}



//不允许创建临时变量，交换两个整数的内容

//#include <stdio.h>
//int main()
//{
//	int a = 0;
//	int b = 0;
//	printf("请输入俩个要交换的数字：");
//	scanf("%d,%d", &a, &b);
//	a = a ^ b;
//	b = a ^ b;
//	a = a ^ b;
//	printf("a = %d,b = %d\n", a, b);
//	return 0;
//}

//写一个函数返回参数二进制中 1 的个数。

//比如： 15    0000 1111    4 个 1

//#include <stdio.h>
//int main()
//{
//	int num = 0;
//	printf("请输入10进制数：");
//	scanf("%d", &num);
//	int i = 0;
//	int count = 0;//计数 
//	while (num)
//	{
//		count++;
//		num = num & (num - 1);
//	}
//	printf("二进制中1的个数 = %d\n", count);
//	return 0;
//}

//获取一个整数二进制序列中所有的偶数位和奇数位，分别打印出二进制序列
#include <stdio.h>

//void fun1(int num) 
//{
//    for (int i = 31; i >= 0; i--) 
//    {
//        printf("%d", (num >> i) & 1);
//    }
//    printf("\n");
//}
//
//void fun2(int num) 
//{
//    printf("偶数位: ");
//    for (int i = 30; i >= 0; i -= 2) {
//        printf("%d", (num >> i) & 1);
//    }
//    printf("\n奇数位: ");
//    for (int i = 31; i >= 1; i -= 2) {
//        printf("%d", (num >> i) & 1);
//    }
//    printf("\n");
//}
//
//int main() {
//    int num = 0; 
//    printf("请输入一个10进制的数字：");
//    scanf("%d", &num);
//    printf("原始2进制码：");
//    fun1(num);
//    fun2(num);
//    return 0;
//}

//编程实现：两个int（32位）整数m和n的二进制表达中，有多少个位(bit)不同？;

#/*include <stdio.h>
int count(int m, int n) 
{
    int box = m ^ n;
    int s = 0;
    for (int i = 0; i < 32; i++) 
    {
        if ((box >> i) & 1) 
        {
            s++;
        }
    }
    return s;
}

int main() {
    int m = 0;  
    int n = 0;
    printf("请输入2个10进制整数：");
    scanf("%d,%d", &m, &n);
    int s = count(m, n);
    printf("m 和 n 的二进制表达中不同的位数为: %d\n", s);

    return 0;
}*/


//#include <stdio.h>
////代码1 - 测试⽆const修饰的情况 
//void test1()
//{
//	int n = 10;
//	int m = 20;
//	int* p = &n;
//	*p = 20;//ok?
//	p = &m; //ok?
//}
/// 代码2 - 测试const放在 * 的左边情况
//void test2()
//{
//	int n = 10;
//	int m = 20;
//	const int* p = &n;
//	*p = 20;//ok?
//	p = &m; //ok?
//}
////代码3 - 测试const放在*的右边情况 
//void test3()
//{
//	int n = 10;
//	int m = 20;
//	int* const p = &n;
//	*p = 20; //ok?
//	p = &m; //ok?
//}
////代码4 - 测试*的左右两边都有const 
//void test4()
//{
//	int n = 10;
//	int m = 20;
//	int const* const p = &n;
//	*p = 20; //ok?
//	p = &m; //ok?
//}
//int main()
//{
//	//测试⽆const修饰的情况 
//	test1();
//	//测试const放在*的左边情况 
//	test2();
//	//测试const放在*的右边情况 
//	test3();
//	//测试*的左右两边都有const 
//	test4();
//	return 0;
//}


//#include <stdio.h>
////指针变量的⼤⼩取决于地址的⼤⼩ 
////32位平台下地址是32个bit位（即4个字节） 
////64位平台下地址是64个bit位（即8个字节） 
//int main()
//{
//	int a = 10;
//	int *p = &a;
//	printf("%zd\n", sizeof(char*));
//	printf("%zd\n", sizeof(short*));
//	printf("%zd\n", sizeof(int *));
//	printf("%zd\n", sizeof(double*));
//	return 0;
//}


//#include <stdio.h>
//int main()
//{
//    int i = 1;
//    int ret = (++i) + (++i) + (++i);
//    printf("ret = %d\n", ret);
//    return 0;
//}

//#include <stdio.h>
//int i;
//int main()
//{
//    i--;
//    if (i > sizeof(i))
//    {
//        printf(">\n");
//        printf("%d\n", i);
//        printf("%d\n", sizeof(i));
//    }
//    else
//    {
//        printf("<\n");
//        printf("%d\n", i);
//        printf("%d\n", sizeof(i));
//    }
//    return 0;
//}
